package com.jia.leetCode;

import java.util.Arrays;
import java.util.HashMap;

/**
 * 1460. 通过翻转子数组使两个数组相等
 */
public class Pro1460 {
    //hash
    public boolean canBeEqual2(int[] target, int[] arr) {
        if(target.length != arr.length) { return false; }
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int val : target) {
            map.put(val, map.getOrDefault(val, 0) + 1);
        }
        for(int val : arr) {
            int count = map.getOrDefault(val, 0) - 1;
            if(count < 0) { return false;}
            else if(count == 0) {
                map.remove(val);
            }else {
                map.put(val, count);
            }
        }
        return map.isEmpty();
    }
    //异或,不行，还要加层hash判断
    public boolean canBeEqual3(int[] target, int[] arr) {
        if(target.length != arr.length) { return false; }
        int num = 0;
        for(int val : target) {
            num ^= val;
        }
        for(int val : arr) {
            num ^= val;
        }
        return num == 0;
    }
    public boolean canBeEqual(int[] target, int[] arr) {
        Arrays.sort(target);
        Arrays.sort(arr);
        return Arrays.equals(target,arr);
    }
}
